package com.zc.designmodel.structural.composite;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

/**
 * @author: zhuCan
 * @date: 2020/4/12 17:37
 * @description: 组合模式（Composite Pattern），又叫部分整体模式，是用于把一组相似的对象当作一个单一的对象。
 * 组合模式依据树形结构来组合对象，用来表示部分以及整体层次。这种类型的设计模式属于结构型模式，它创建了对象组的树形结构。
 *
 * 这种模式创建了一个包含自己对象组的类。该类提供了修改相同对象组的方式。
 */
public class Employee {

  private String name;
  private String department;
  private BigDecimal salary;
  private List<Employee> subordinates;

  public Employee(String name,String department,BigDecimal salary){
    this.department=department;
    this.name=name;
    this.salary=salary;
    subordinates=new ArrayList<>();
  }

  public void addSubordinate(Employee employee){
    subordinates.add(employee);
  }

  public void removeSubordinate(Employee employee){
    subordinates.remove(employee);
  }

  public List<Employee> getSubordinates(){
    return subordinates;
  }
}
